/*
 * L.Chen
 */
Ext.form.FileUploadField = Ext.extend(Ext.form.TextField,  {
    /**
     * @cfg {String} buttonText The button text to display on the upload button (defaults to
     * 'Browse...').  Note that if you supply a value for {@link #buttonCfg}, the buttonCfg.text
     * value will be used instead if available.
     */
    buttonText: 'Browse...',
    buttonOnly: false,
    /**
     * @cfg {Number} buttonOffset The number of pixels of space reserved between the button and the text field
     * (defaults to 3).  Note that this only applies if {@link #buttonOnly} = false.
     */
    buttonOffset: 3,
    readOnly: true,
    fileInfo:null,
    hasAccess:false,
    /**
     * @hide 
     * @method autoSize
     */
    autoSize: Ext.emptyFn,
    initComponent: function(){
        Ext.form.FileUploadField.superclass.initComponent.call(this);
        
        this.addEvents(
            /**
             * @event fileselected
             * Fires when the underlying file input field's value has changed from the user
             * selecting a new file from the system file selection dialog.
             * @param {Ext.form.FileUploadField} this
             * @param {String} value The file value returned by the underlying file input field
             */
            'fileselected'
        );
    },
    onRender : function(ct, position){
        Ext.form.FileUploadField.superclass.onRender.call(this, ct, position);
        this.wrap = this.el.wrap({cls:'x-form-field-wrap x-form-file-wrap'});
        this.el.addClass('x-form-file-text');
        this.el.dom.removeAttribute('name');
        this.fileInput = this.wrap.createChild({
            id: this.getFileInputId(),
            name: this.name||this.getId(),
            cls: 'x-form-file',
            tag: 'input', 
            type: 'file',
            size: 1
        });
       /*
       this.delButtonL= this.wrap.createChild({
        	tag: 'input',
        	 cls: 'x-form-file-L-btn-del',
        	//style:'height:22;right: 0;position: absolute;',
        	 type: 'button',
        	 onclick:function(){alert()}
        	
        });
       
       
       var the = this
       this.delButtonL.on('click', function(){
    	   the.setValue('dd')
    	   var v = the.fileInput.dom.value;
    	   //alert(v)
    	   alert(the.button
    			   )
    	   the.button.setVisible(false)
       })
    */
        
     
        var btnCfg = Ext.applyIf(this.buttonCfg || {}, {
            text: this.buttonText
        });
       
        
       // alert('x-form-file-btn' + (btnCfg.iconCls ? ' x-btn-icon' : ''))
        this.button = new Ext.Button(Ext.apply(btnCfg, {
            renderTo: this.wrap,
            cls: 'x-form-file-btn' + (btnCfg.iconCls ? ' x-btn-icon' : '')
        }));
       // alert(btnCfg)
        this.del = new Ext.Button(Ext.apply(btnCfg, {
            renderTo: this.wrap,
            cls: 'x-form-file-L-btn-del x-btn-icon',
            iconCls:'del'
        }));
        this.del.on('click', function(){
        	var the = this;
        	if (the.hasAccess){
	        	Ext.Msg.confirm('','你确定要删除附件吗?',function(b){
	        		if(b=='yes'){
	        			Ext.Ajax.request({
	        				   url: 'jsp/trm/common/TrmAttach_del.action',
	        				   success:function(r){
	        						var result= Ext.encode(r.responseText);
	        						if (result.result){
	        							Ext.Msg.alert('','您的附件,已删除成功');
	        							the.hasAccess=false;
	        							the.fileInput.dom.value=''
	        			        		the.setValue('');
	        			        		the.button.setDisabled(false)
	        			        	    the.fileInput.dom.disabled=false
	        						}else{
	        							Ext.Msg.alert('','您的附件,删除时出现错误');
	        						}
	        						
	        						
	        				   },
	        				   params: { 'trmAttach.space': the.fileInfo.space,'trmAttach.id':the.fileInfo.fileId }
	        			});
	        		}
	        	})
        	}else{
        		the.fileInput.dom.value=''
        		the.setValue('');
        		the.button.setDisabled(false)
        	    the.fileInput.dom.disabled=false
        	}
        	//alert()
            //var v = this.fileInput.dom.value;
           // this.button.setVisible(true)
           // alert(v)
           // this.fireEvent('fileselected', this, v);
        }, this);
        if(this.buttonOnly){
        	
            this.el.hide();
            this.wrap.setWidth(this.button.getEl().getWidth());
        }
        
        this.fileInput.on('change', function(){
            var v = this.fileInput.dom.value;
            this.setValue(v);
            //alert(v)
            this.fireEvent('fileselected', this, v);
        }, this);
        //alert(this.fileName)
        if (this.fileInfo!=null)
        	this.setFileName(this.fileInfo)
    },
    getFileInputId: function(){
        return this.id+'-file';
    },
    onResize : function(w, h){
        Ext.form.FileUploadField.superclass.onResize.call(this, w, h);
        
        this.wrap.setWidth(w);
        
        if(!this.buttonOnly){
        	//alert()
            var w = this.wrap.getWidth() - this.button.getEl().getWidth() - this.buttonOffset-25;
            this.el.setWidth(w);
        }
    },
    preFocus : Ext.emptyFn,
    getResizeEl : function(){
        return this.wrap;
    },
    setFileName:function(value){
    	this.setValue(value.name);
    	this.hasAccess=true;
    	this.button.setDisabled(true)
    	this.fileInput.dom.disabled=true
    },
    getPositionEl : function(){
        return this.wrap;
    },
    alignErrorIcon : function(){
        this.errorIcon.alignTo(this.wrap, 'tl-tr', [2, 0]);
    }
});
Ext.reg('fileuploadfieldL', Ext.form.FileUploadField);